package org.ninekone.testGame;

public class ShootShoot {
	public Background background;//attributo di classe per lo sfondo
	public GameCharacter userGameChar;
	public GameCharacter cpuGameChar;
	public GameEngine gameEngine;
	
	public ShootShoot(){
		//Costruttore del gioco, richiamato all'interno del main()
		initializeGame(); //inizializza i componenti del gioco, grafica, sonoro, IA e i controlli
		runGame(); //da' il via al gioco
	}
	public void initializeGame(){
		//inizializza la schermata di gioco
		loadBackground();//carica i fondali
		loadCharacters();//carica i modelli dei personaggi
		//loadSound();//carica il sonoro; commentato perchè chiamato all'interno di loadCharacters()
		initializeParameters();//carica il testo on screen e il metodo di controllo
		//runGame(); //da' il via al gioco;spostato nel costruttore
	}
	private void loadBackground() {
		// TODO Auto-generated method stub
		//carica il modello per lo sfondo se presente altrimenti, cosa molto probabile, sarà una semplice bitmap
		//se non sarà già presente qualcosa nelle librerie creerò una classe GameBackground ad hoc. Da verificare se far interagire il background 
		//ai movimenti della camera, ad esempio effettuando uno scrolling verticale o orizzontale,
		//o se questa cosa verrà gestita in automatico dalla stessa camera 
		//una cosa importante sono i limiti fisici dell'area di gioco, che saranno delle proprietà di questa classe, 
		//e in ambito cometico il tipo di luce ambientale
		
		// TODO 1) Istanzia una classe di Background,  PER IL MOMENTO CI ACCONTENTIAMO DEL DEFAULT.
		background =new Background();
	}
	
	private void loadCharacters() {
		// TODO Auto-generated method stub
		//carica il modello per i personaggi a schermo, per il momento il modello sarà uno di due diversi colori
		//il modello del personaggio avrà un proprio aspetto, un nome, delle animazioni, una certa quantità in potenza di attacco
		//ed efficacia degli scudi, una propria galleria sonora, un sistema di controllo
		userGameChar=GameCharacter.getGameCharacter(GameCharacter.HUMAN_TYPE);//attenzione può restituire null se non gli si passa il codice int corretto
		cpuGameChar=GameCharacter.getGameCharacter(GameCharacter.ANDROID_TYPE);
		//characters=new GameCharacter[]{userGameChar,cpuGameChar};
		loadSound(/*playChar*/);//viene richiamato il metodo di inizializzazione dell'audio da qui
	}

	private void loadSound(/*PlayableCharacter playChar*/) {
		// TODO Auto-generated method stub
		//carica gli effetti sonori in base al personaggio prescelto, per il momento sarà roba molto cheap registrata con la mia voce.
		//la libreria suoni sarà un insieme di suoni mp3, da riprodurre in caso di un particolare evento. 
		//Alcuni eventi saranno attivati dall'azione di input del giocatore, altri saranno una conseguenza dell'interazione degli elementi di gioco
		//ad esempio colpo a segno, colpo a vuoto, urto dei personaggi, 
		
		
	}
	
	private void initializeParameters() {
		// TODO Auto-generated method stub
		//resetta gli indicatori di vittoria/barre di energia, la posizione dei playchar
		//inizializza i listener per il metodo di controllo, e i parametri per l'IA 
	}
	
	private void runGame() {
		// TODO Auto-generated method stub
		//Da' il via al gioco inizia l'effettivo disegno degli elementi di gioco e la reazione degli stessi 
		//agli input dei comandi. Anche l'IA effettuerà una lettura della posizione e dello STATO CORRENTE 
		//dell'avversario per decidere una contromossa, volta per volta. Alla fine della partita finirà si
		//uscirà dal presente metodo e terminerà il programma.
		//gameEngine= new GameEngine (this); 
		TestInput testInput=new TestInput(userGameChar,background);
		testInput.start();
		
	}
	
	public static void main (String argv []){
		ShootShoot shooter = new ShootShoot();
	}
}